package chances.epg.ui.taglib;

import javax.servlet.jsp.PageContext;

import chances.epg.ui.config.EpgUIResolver;
import chances.epg.ui.taglib.model.EpgPageContext;

public abstract class EpgPageContextResolver {
	public static EpgPageContext getEpgPageContext(PageContext pageContext) {
		EpgPageContext epgPageContext = (EpgPageContext) pageContext.getAttribute(EpgPageContext.NAME,
				PageContext.REQUEST_SCOPE);
		if (epgPageContext == null) {
			epgPageContext = create(pageContext);
			pageContext.setAttribute(EpgPageContext.NAME, epgPageContext, PageContext.REQUEST_SCOPE);
		}
		return epgPageContext;
	}

	public static EpgPageContext create(PageContext pageContext) {
		EpgPageContext epgPageContext = new EpgPageContext(pageContext);
		EpgUIResolver epgUIResolver = (EpgUIResolver) pageContext.getServletContext().getAttribute(EpgUIResolver.NAME);
		if (epgUIResolver != null) {
			epgPageContext.setBackUrl(epgUIResolver.getBackUrl(pageContext));
			epgPageContext.setFocusId(epgUIResolver.getFocusId(pageContext));
			epgPageContext.setUserSession(epgUIResolver.getUser(pageContext));
			epgPageContext.setResourcePath(epgUIResolver.getResourcePath(pageContext));
			epgPageContext.setAccessContext(epgUIResolver.getAccessContext(pageContext));
			epgPageContext.setHistory(epgUIResolver.getHistory(pageContext));
			epgPageContext.setSiteCode(epgUIResolver.getSiteCode( pageContext));

		}
		return epgPageContext;

	}

}
